Apprendre à coder avec JavaScript
On part de zéro, on va loin. Chaque exemple est modifiable et exécutable directement dans la page : lis, change, casse, recommence.
▶ Exécuter
(ou Ctrl + Entrée). Le bouton ↺ remet l'exemple d'origine.
Tout ce qui suit // est un commentaire : lis-les, ils expliquent tout.
00Coder, c'est quoi ?
Un ordinateur est extrêmement rapide mais complètement bête : il fait exactement ce qu'on lui dit, ligne par ligne, sans jamais deviner ce qu'on « voulait dire ». Coder, c'est écrire ces instructions dans un langage précis qu'il comprend.
JavaScript (JS) est le langage des navigateurs web. Toutes les pages interactives que tu utilises (menus, formulaires, jeux, cartes…) en contiennent. Il tourne aussi sur des serveurs (Node.js), dans des applis, des objets connectés…
Les 3 couches d'une page web
┌────────────┐ ┌────────────┐ ┌────────────────┐ │ HTML │ │ CSS │ │ JavaScript │ │ le contenu │ + │ l'apparence│ + │ le comportement│ │ "un titre" │ │ "en rouge" │ │ "si on clique, │ │ │ │ │ │ il grossit" │ └────────────┘ └────────────┘ └────────────────┘ index.html style.css script.js
Un programme = des instructions, dans l'ordre
Le code se lit de haut en bas. Chaque ligne est une instruction,
généralement terminée par un point-virgule ;.
Essaie : clique sur Exécuter.
F12 (ou clic droit → Inspecter) puis onglet « Console ».
C'est l'outil n°1 du développeur : on y voit les messages et les erreurs.
Tu peux même y taper du JavaScript directement.
01La console & les commentaires
console.log(...) affiche ce qu'on met entre les parenthèses.
C'est ton meilleur ami pour comprendre ce qui se passe dans ton code :
quand quelque chose ne marche pas, on affiche des valeurs pour vérifier.
02Les variables : des boîtes avec une étiquette
Une variable est une boîte qui porte un nom et contient une valeur. On la crée (on dit déclare) une fois, puis on l'utilise par son nom.
let age = 20;
┌─────────┐
│ 20 │ ← la valeur (ce qu'il y a dedans)
└─────────┘
age ← l'étiquette (le nom de la variable)
| Mot-clé | Peut-on changer la valeur ? | Quand l'utiliser |
|---|---|---|
const | Non | Par défaut, tout le temps |
let | Oui | Quand la valeur doit évoluer (compteur, score…) |
var | Oui | Jamais : ancienne syntaxe, comportements piégeux |
La portée (scope) : où une variable existe
Une variable déclarée avec let ou const n'existe que
dans le bloc { } où elle est créée.
En dehors, elle est invisible.
03Les types de données
Toute valeur a un type. Les principaux :
| Type | Exemple | C'est quoi |
|---|---|---|
string | "bonjour" | Du texte (chaîne de caractères) |
number | 42, 3.14 | Un nombre (entier ou à virgule, avec un point) |
boolean | true, false | Vrai ou faux |
undefined | undefined | « Pas encore de valeur » |
null | null | « Vide, volontairement » |
object | { }, [ ] | Une structure qui regroupe des valeurs (chap. 8 et 9) |
Number().
04Les opérateurs
Voir une solution
05Les conditions : prendre des décisions
Un programme doit souvent choisir : si quelque chose est vrai, faire ceci, sinon faire cela.
┌──────────────┐
│ age >= 18 ? │
└──────┬───────┘
oui ┌────┴────┐ non
▼ ▼
"majeur" "mineur"
switch : comparer une valeur à plusieurs cas précis
06Les boucles : répéter sans se répéter
Afficher les nombres de 1 à 1000 ? On ne va pas écrire 1000 lignes. Une boucle répète un bloc de code tant qu'une condition est vraie.
Un indice
Utilise le modulo %. Et teste d'abord le cas « 3 ET 5 »… pourquoi ?
Voir une solution
07Les fonctions : des recettes réutilisables
Une fonction est un morceau de code auquel on donne un nom, pour pouvoir le lancer (on dit appeler) autant de fois qu'on veut. Elle peut recevoir des paramètres (les ingrédients) et renvoyer un résultat (le plat).
paramètres fonction valeur renvoyée
(3, 4) ───▶ ┌──────────────┐ ───▶ 7
│ additionner │
└──────────────┘
Les fonctions sont des valeurs
En JS, une fonction peut être rangée dans une variable, ou passée en argument à une autre fonction. Une fonction passée ainsi s'appelle un callback (« rappel »). C'est une idée centrale en JavaScript.
estPair(n) qui renvoie
true ou false, puis une fonction maximum(a, b)
qui renvoie le plus grand des deux nombres.
Voir une solution
08Les tableaux : des listes de valeurs
Un tableau (array) range plusieurs valeurs dans l'ordre. Chaque case a un numéro, l'indice, qui commence à 0.
const fruits = ["pomme", "kiwi", "poire"];
indice : 0 1 2
┌───────┬───────┬───────┐
│ pomme │ kiwi │ poire │ fruits.length → 3
└───────┴───────┴───────┘
Les super-pouvoirs : map, filter, reduce…
Ces méthodes prennent une fonction (un callback, vu au chapitre 7) et l'appliquent à chaque élément. Elles ne modifient pas le tableau d'origine : elles en renvoient un nouveau. C'est le style « moderne » de JS.
09Les objets : décrire une chose
Un tableau range des valeurs par position. Un objet les
range par nom : des paires clé: valeur qu'on appelle
propriétés. Idéal pour décrire un utilisateur, un produit, un personnage…
Syntaxes modernes très courantes
const b = a; ne copie pas un objet ou un tableau : a
et b désignent alors le même objet. Modifier l'un modifie l'autre.
Pour copier : const b = { ...a }; ou [...a].
10Le DOM : piloter la page avec JS
Quand le navigateur lit le HTML, il construit en mémoire un arbre d'objets : le DOM (Document Object Model). JavaScript peut lire et modifier cet arbre… et la page change instantanément à l'écran.
document
└── html
├── head
│ └── title
└── body
├── h1 ← document.querySelector("h1")
└── div.carte ← document.querySelector(".carte")
└── p
document.
Ici, chaque exemple a sa petite zone blanche nommée scene : on écrit
scene.querySelector(...) pour ne toucher qu'elle. Le principe est identique.
innerHTML interprète le texte comme du HTML ("<b>gras</b>"
devient gras). Pratique, mais dangereux avec du texte tapé par un utilisateur :
il pourrait injecter du code (faille « XSS »). Par défaut, utilise textContent.
11Les événements : réagir à l'utilisateur
Un événement, c'est quelque chose qui se produit : un clic, une touche
pressée, la souris qui bouge, un formulaire envoyé… On demande au navigateur :
« quand tel événement arrive sur tel élément, exécute cette fonction ».
C'est le rôle de addEventListener (« ajouter un écouteur »).
→ (vide)
Les événements les plus utiles
| Événement | Se déclenche quand… |
|---|---|
click | on clique |
input | la valeur d'un champ change (à chaque frappe) |
submit | un formulaire est envoyé (penser à e.preventDefault()) |
keydown | une touche est enfoncée (e.key dit laquelle) |
mouseenter / mouseleave | la souris entre / sort |
scroll | on fait défiler |
DOMContentLoaded | le HTML est entièrement chargé |
12L'asynchrone : gérer le temps qui passe
Jusqu'ici, tout s'exécutait instantanément, dans l'ordre. Mais certaines actions prennent du temps : attendre 2 secondes, télécharger des données sur internet… JavaScript ne bloque pas la page en attendant : il continue et revient plus tard quand le résultat est prêt. C'est l'asynchrone.
Les promesses et async / await
Une Promise (promesse) est un objet qui représente un résultat
futur : « je n'ai pas encore la réponse, mais je te promets de te la donner
(ou de te dire que ça a échoué) ». Le mot-clé await permet
d'attendre une promesse, dans une fonction marquée async.
fetch : récupérer des données sur internet
fetch(url) envoie une requête à un serveur et renvoie une promesse.
On récupère le plus souvent du JSON (chapitre 9).
Ici, on interroge une API de test gratuite (connexion internet nécessaire).
- (rien encore)
13Les classes : des moules à objets
Quand on doit créer beaucoup d'objets du même genre (des ennemis dans un jeu, des produits dans une boutique…), on écrit un moule : une classe. Chaque objet fabriqué avec est une instance. C'est la base de la programmation orientée objet.
14Mini-projet : le jeu du nombre mystère
On rassemble tout : variables, conditions, fonctions, DOM, événements. L'ordinateur choisit un nombre entre 1 et 100 ; le joueur doit le deviner en un minimum d'essais. Exécute, joue, puis lis le code et améliore-le !
Essais :
15Et après ?
Récapitulatif
| Notion | À retenir |
|---|---|
| Variables | const par défaut, let si ça change |
| Comparaison | Toujours === et !== |
| Fonctions | Petites, un seul rôle, un nom qui dit ce qu'elles font |
| Tableaux | map, filter, find, reduce |
| DOM | querySelector, textContent, classList |
| Événements | addEventListener("click", fonction) |
| Asynchrone | async / await + try / catch |
Comment progresser
- Lis les erreurs : elles disent presque toujours où et pourquoi.
console.logpartout quand tu ne comprends pas ce qui se passe.- Découpe : un gros problème = plein de petits problèmes faciles.
- Copie moins, tape plus : écrire le code soi-même ancre la mémoire.
- Relis
script.jsde cette page : tu sais maintenant tout lire !
Ressources
- MDN Web Docs — la référence, en français
- javascript.info — tutoriel complet et clair
- p5.js — dessiner et animer avec JS, idéal en école d'art
- CodePen — tester HTML/CSS/JS en ligne et partager
index.html, style.css, script.js) : une liste de
tâches où l'on peut ajouter une tâche via un champ, la cocher (classe CSS « faite »)
et la supprimer. Tout ce qu'il faut est dans les chapitres 8, 10 et 11.